/**
 * 定义共享的pinia数据
 */
import {defineStore} from 'pinia'

/**
 * 定义一个person对外共享
 */
export const definePerson = defineStore( // 对于导入者来说这个definePerson是一个函数，这个函数生成一个对象，对象中包含了你所定义的共享数据，虽然这里定义的是对象
    {
        id: "personPinia", // 当前数据的id，必须全局唯一，并且是在多个store.js文件中都唯一
        state: function() { // 状态，其实就是响应式数据，这个状态是用一个function来表示的
            return { // 固定写法，retrun中的数据才是我们定义的共享数据
                userName: "zhangsan",
                age: 0,
                hobbies: ["唱歌", "跳舞"]
            }
        },
        // 这里的getters就好比java中的get方法，但是这里写在getters中的属性，是以属性的方式取值的，而不是跟java一样使用getter方法取值，
        //这里面可以定义一些使用数据计算的方法，但是不能修改数据
        getters: {
            getAge() {
                return this.age
            },
            getHobbiesCount(){
                return this.hobbies.length
            }
        },
        // actions类似java中的setter，可以设置对象中属性的值
        actions:{
            doubleAge() {
                this.age = this.age *2
            }

        }
    }
)